/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.general.backup;

import org.mybeans.Sesion;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.sql.Date;
import javax.swing.JOptionPane;

/**
 *
 * @author avbravo
 */
public class Backup {

    Sesion sesion;
    int Anio, Mes, Dia, Hora, Minutos, Segundos;
    String archivo;
    String ruta;
    java.sql.Date mydate;
    String osName;

    public Backup() {
        sesion = new Sesion();
        osName = System.getProperty("os.name");
        osName = osName.toLowerCase();
    }

    public int getAnio() {
        return Anio;
    }

    public void setAnio(int Anio) {
        this.Anio = Anio;
    }

    public int getDia() {
        return Dia;
    }

    public void setDia(int Dia) {
        this.Dia = Dia;
    }

    public int getHora() {
        return Hora;
    }

    public void setHora(int Hora) {
        this.Hora = Hora;
    }

    public int getMes() {
        return Mes;
    }

    public void setMes(int Mes) {
        this.Mes = Mes;
    }

    public int getMinutos() {
        return Minutos;
    }

    public void setMinutos(int Minutos) {
        this.Minutos = Minutos;
    }

    public int getSegundos() {
        return Segundos;
    }

    public void setSegundos(int Segundos) {
        this.Segundos = Segundos;
    }

    public String getArchivo() {
        return archivo;
    }

    public void setArchivo(String archivo) {
        this.archivo = archivo;
    }

    public String getRuta() {
        return ruta;
    }

    public void setRuta(String ruta) {
        this.ruta = ruta;
    }

    public Date getMydate() {
        return mydate;
    }

    public void setMydate(Date mydate) {
        this.mydate = mydate;
    }

    public void GenerarNombreArchivo() {
        try {
            java.util.Calendar ca = java.util.Calendar.getInstance();
            mydate = new java.sql.Date(ca.getTimeInMillis());


            this.Anio = ca.get(java.util.Calendar.YEAR);
            this.Mes = ca.get(java.util.Calendar.MONTH);
            //ya que el mes lo pone en cero
            this.Mes++;

            this.Dia = ca.get(java.util.Calendar.DAY_OF_MONTH);
            this.Hora = ca.get(java.util.Calendar.HOUR_OF_DAY);
            this.Minutos = ca.get(java.util.Calendar.MINUTE);
            this.Segundos = ca.get(java.util.Calendar.SECOND);
            String idmunicipio = sesion.getMunicipio();
            idmunicipio = idmunicipio.trim();
            //archivo = idmunicipio + String.valueOf(this.Anio) + "_";
            archivo =  String.valueOf(this.Anio) ;
            if (this.Mes < 10) {
                archivo += "0" + String.valueOf(this.Mes);
            } else {
                archivo += String.valueOf(this.Mes);
            }
            if (this.Dia < 10) {
                archivo += "0" + String.valueOf(this.Dia);
            } else {
                archivo += String.valueOf(this.Dia);
            }
            if (this.Hora < 10) {
                archivo += "0" + String.valueOf(this.Hora);
            } else {
                archivo += String.valueOf(this.Hora);
            }
            if (this.Minutos < 10) {
                archivo += "0" + String.valueOf(this.Minutos);
            } else {
                archivo += String.valueOf(this.Minutos);
            }

            archivo += ".sql";

            boolean success = (new File("backup")).mkdir();
            if (!success) {
                // Directory creation failed
            }

            if (osName.equals("linux")) {
                ruta = "/home/avbravo/ingresos/backup/";

            } else {
                ruta = "C:\\ingresos\\backup\\";
            }



        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase:Backup.java\nMetodo:GenerarNombreArchivo()\nError: " + ex.getMessage().toString(), "Error", JOptionPane.ERROR_MESSAGE);

        }
    }

    public void EjecutarBackup() {
        try {

            boolean directorio = (new File("backup")).mkdir();
            if (!directorio) {
                // Directory creation failed
            }
            boolean exists, success;
            FileWriter fw;
            BufferedWriter bw;
            PrintWriter salida;


            if (osName.equals("linux")) {
                exists = (new File("ejecutarbackup.sh")).exists();
                if (exists) {
                    success = (new File("ejecutarbackup.sh")).delete();
                    if (!success) {
                        // Deletion failed
                    }
                }

                fw = new FileWriter("ejecutarbackup.sh");
                bw = new BufferedWriter(fw);
                salida = new PrintWriter(bw);
                String comando = "mysqldump -uroot -pdenver  sirmupadb -r  /home/avbravo/ingresos/backup/" + this.archivo;
                //salida.println("mysqldump -uroot -pdenver sirmupadb -r  /home/avbravo/ingresos/backup/backup.sql");
                salida.println(comando);
                salida.close();
                Process proc = Runtime.getRuntime().exec("sh ejecutarbackup.sh");

            } else {
                exists = (new File("ejecutarbackup.bat")).exists();
                if (exists) {
                    success = (new File("ejecutarbackup.bat")).delete();
                    if (!success) {
                        // Deletion failed
                    }

                }

                /*
                 *
                 *Crea el archivo .bat para windows
                 */
                fw = new FileWriter("ejecutarbackup.bat");
                bw = new BufferedWriter(fw);
                salida = new PrintWriter(bw);
                String comando = "cd " + sesion.getMysql_home();
                salida.println(comando);
                comando = "mysqldump -uroot -pdenver sirmupadb -r  c:\\ingresos\\backup\\" + this.archivo;
                salida.println(comando);
               

                salida.close();
                Process proc = Runtime.getRuntime().exec("ejecutarbackup.bat");
            }


JOptionPane.showMessageDialog(null, "Backup realizado exitosamente", "Backup", JOptionPane.INFORMATION_MESSAGE);
            

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase:Backup.java\nMetodo:EjecutarArchivo()\nError: " + ex.getMessage().toString(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }


      public void EjecutarRespaldo(String restauracion) {
        try {

            boolean directorio = (new File("backup")).mkdir();
            if (!directorio) {
                // Directory creation failed
            }
            boolean exists, success;
            FileWriter fw;
            BufferedWriter bw;
            PrintWriter salida;


            if (osName.equals("linux")) {
                exists = (new File("ejecutarrestauracion.sh")).exists();
                if (exists) {
                    success = (new File("ejecutarrestauracion.sh")).delete();
                    if (!success) {
                        // Deletion failed
                    }
                }

                fw = new FileWriter("ejecutarrestauracion.sh");
                bw = new BufferedWriter(fw);
                salida = new PrintWriter(bw);
                String comando = "mysql -uroot -pdenver sirmupadb <  /home/avbravo/ingresos/backup/" + restauracion;
                //salida.println("mysqldump -uroot -pdenver sirmupadb -r  /home/avbravo/ingresos/backup/backup.sql");
                salida.println(comando);
                salida.close();
                Process proc = Runtime.getRuntime().exec("sh ejecutarrestauracion.sh");

            } else {
                exists = (new File("ejecutarrestauracion.bat")).exists();
                if (exists) {
                    success = (new File("ejecutarrestauracion.bat")).delete();
                    if (!success) {
                        // Deletion failed
                    }

                }

                /*
                 *
                 *Crea el archivo .bat para windows
                 */
                fw = new FileWriter("ejecutarrestauracion.bat");
                bw = new BufferedWriter(fw);
                salida = new PrintWriter(bw);
                String comando = "cd " + sesion.getMysql_home();
                salida.println(comando);
                comando = "mysql -uroot -pdenver sirmupadb < c:\\ingresos\\backup\\" + restauracion;
                salida.println(comando);
                

                salida.close();
                Process proc = Runtime.getRuntime().exec("ejecutarrestauracion.bat");
            }



            sesion.MostrarMensajeInformacion("Restauracion de Backup", "Restauracion de Backup realizado con exito");

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase:Backup.java\nMetodo:EjecutarRestauracion()\nError: " + ex.getMessage().toString(), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }


}
